﻿
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace XF.Meeting.Entity.CommonEntity.wxupdate
{
    public class WechatScheduleUpdate
    {
        public class Attendees
        {
            /// <summary>
            /// 日程参与者列表。最多支持2000人（否）
            /// </summary>
            public string userid { get; set; }
        }

        public class Reminders
        {
            /// <summary>
            /// 是否需要提醒。0-否；1-是
            /// </summary>
            public int is_remind { get; set; } = 1;
            /// <summary>
            /// 日程开始（start_time）前多少秒提醒，当is_remind为1时有效。
            //        例如： 300表示日程开始前5分钟提醒。目前仅支持以下数值：
            //0 - 事件开始时
            //300 - 事件开始前5分钟
            //900 - 事件开始前15分钟
            //3600 - 事件开始前1小时
            //86400 - 事件开始前1天
            /// </summary>
            public int remind_before_event_secs { get; set; } = 900;
            /// <summary>
            /// 是否重复日程。0-否；1-是
            /// </summary>
            public int is_repeat { get; set; } = 0;
            /// <summary>
            /// 重复类型，当is_repeat为1时有效。目前支持如下类型：
            //0 - 每日
            //1 - 每周
            //2 - 每月
            //5 - 每年
            //7 - 工作日
            /// </summary>
            public int repeat_type { get; set; }
            /// <summary>
            /// 重复结束时刻，Unix时间戳。不填或填0表示一直重复
            /// </summary>
            public int repeat_until { get; set; }
            /// <summary>
            /// 是否自定义重复。0-否；1-是
            /// </summary>
            public int is_custom_repeat { get; set; } = 0;
            /// <summary>
            /// 重复间隔
            //        仅当指定为自定义重复时有效
            //        该字段随repeat_type不同而含义不同
            //例如：
            //repeat_interval指定为3，repeat_type指定为每周重复，那么每3周重复一次；
            //repeat_interval指定为3，repeat_type指定为每月重复，那么每3个月重复一次
            /// </summary>
            public int repeat_interval { get; set; }
            /// <summary>
            /// 每周周几重复
            //仅当指定为自定义重复且重复类型为每周时有效
            //取值范围：1 ~ 7，分别表示周一至周日
            /// </summary>
            public List<int> repeat_day_of_week { get; set; }
            /// <summary>
            /// 每月哪几天重复
            //仅当指定为自定义重复且重复类型为每月时有效
            //取值范围：1 ~ 31，分别表示1 ~31号
            /// </summary>
            public List<int> repeat_day_of_month { get; set; }
            /// <summary>
            /// 每月哪几天重复
            //仅当指定为自定义重复且重复类型为每月时有效
            //取值范围：1 ~ 31，分别表示1 ~31号
            /// </summary>
            public int timezone { get; set; }
        }

        public class Schedule
        {
            /// <summary>
            /// 组织者
            //不多于64字节
            /// </summary>
            public string organizer { get; set; }
            /// <summary>
            /// 企业微信日程id
            /// </summary>
            public string schedule_id { get; set; }

            /// <summary>
            /// 日程开始时间，Unix时间戳
            /// </summary>
            public int start_time { get; set; }
            /// <summary>
            /// 日程结束时间，Unix时间戳
            /// </summary>
            public int end_time { get; set; }
            /// <summary>
            /// 日程参与者列表。最多支持2000人
            /// </summary>
            public List<Attendees> attendees { get; set; }
            /// <summary>
            /// 日程标题。0 ~ 128 字符。不填会默认显示为“新建事件”
            /// </summary>
            public string summary { get; set; }
            /// <summary>
            /// 日程描述 不多于512个字符
            /// </summary>
            public string description { get; set; }
            /// <summary>
            /// 提醒相关信息
            /// </summary>
            public Reminders reminders { get; set; }
            /// <summary>
            ///日程地址不多于128个字符
            /// </summary>
            public string location { get; set; }
        }

        public class ScheduleUpdate
        {
            /// <summary>
            /// 日程信息（是）
            /// </summary>
            public Schedule schedule { get; set; }
       
        }
    }
}